<?php
class Invoice extends XML {
    private $fejlec;
    private $tetelek;
    private $osszesites;
    
    function __construct() {
        parent::__construct(array(
            fejlec => &$this->fejlec,
            tetelek => &$this->tetelek,
            osszesites => &$this->osszesites,
        ), "szamla", array(
            base => "http://www.apeh.hu/2005/szamla",
            xsi => "http://www.w3.org/2001/XMLSchema-instance",
        ));
        $this->fejlec = array();
        $this->tetelek = array();
        $this->osszesites = array();
    }
    
    function setElado($nev, $cim, $adoszam = LEAVE_DEFAULT) {
        $this->fejlec['elado'] = array();
        $this->fejlec['elado']['nev'] = $nev;
        if ($adoszam != LEAVE_DEFAULT) { $this->fejlec['elado']['adoszam'] = $adoszam; }
        $this->fejlec['elado']['cim'] = $cim;
    }
    
    function setVevo($nev, $cim, $adoszam = LEAVE_DEFAULT) {
        $this->fejlec['vevo'] = array();
        $this->fejlec['vevo']['nev'] = $nev;               
        if ($adoszam != LEAVE_DEFAULT) { $this->fejlec['vevo']['adoszam'] = $adoszam; }
        $this->fejlec['vevo']['cim'] = $cim;
    }
    
    function setSzamlainfo($sorszam, $kiallDatum, $teljDatum, $hatarido, $fizmod, $proforma) {
        $this->fejlec['szamlainfo'] = array();
        $this->fejlec['szamlainfo']['sorszam'] = $sorszam;
        $this->fejlec['szamlainfo']['kialldatum'] = $kiallDatum;
        $this->fejlec['szamlainfo']['teljdatum'] = $teljDatum;
        $this->fejlec['szamlainfo']['fizhatarido'] = $hatarido;
        $this->fejlec['szamlainfo']['fizmod'] = $fizmod;
        $this->fejlec['szamlainfo']['szamlatipusa'] = ($proforma == true ? "proforma" : "normál");
        $this->fejlec['szamlainfo']['penznem'] = "HUF";
    }
    
    function addTetel($termeknev, $nettoar, $afakulcs) {
        $tetel = array();
        $ndx = count($this->tetelek) + 1;
        $tetel['termeknev'] = $termeknev;
        $tetel['mennyegys'] = "db";
        $tetel['menny'] = 1;
        $tetel['nettoegysegar'] = $nettoar;
        $tetel['bruttoegysegar'] = $nettoar * $afakulcs/100;
        $tetel['nettoar'] = $nettoar;
        $tetel['afakulcs'] = $afakulcs;
        $tetel['afaertek'] = $nettoar * $afakulcs/100;
        $tetel['bruttoar'] = $tetel['nettoar'] + $tetel['afaertek'];
        $tetel['megjegyzes'] = $termeknev;
        $this->tetelek['tetel[id='.$ndx.']'] = $tetel;
    }

    function calculateOsszesites() {
        $afarovat = array();
        $vegosszeg = array();
        $afarovat['afakulcs'] = $this->tetelek['tetel[id=1]']['afakulcs'];
        $afarovat['nettoar'] = 0;
        $afarovat['afaertek'] = 0;
        $afarovat['bruttoar'] = 0;
        $vegosszeg['nettoarossz'] = 0;
        $vegosszeg['afaertekossz'] = 0;
        $vegosszeg['bruttoarossz'] = 0;
        foreach ($this->tetelek as $key=>$value) {
            $afarovat['nettoar'] += $this->tetelek[$key]['nettoar'];
            $afarovat['afaertek'] += $this->tetelek[$key]['afaertek'];
            $afarovat['bruttoar'] += $this->tetelek[$key]['bruttoar'];
            $vegosszeg['nettoarossz'] += $this->tetelek[$key]['nettoar'];
            $vegosszeg['afaertekossz'] += $this->tetelek[$key]['afaertek'];
            $vegosszeg['bruttoarossz'] += $this->tetelek[$key]['bruttoar'];
        }
        $this->osszesites['afarovat[id=1]'] = $afarovat;
        $this->osszesites['vegosszeg'] = $vegosszeg;
    }

    function getInvoiceNumber() {
        return $this->fejlec['szamlainfo']['sorszam'];
    }
    
    function getGrossPayment() {
        return $this->osszesites['vegosszeg']['bruttoarossz'];
    }
}

?>
